package uabc.ia.agentelimpieza.ambiente;

import java.util.Observable;

import uabc.ia.agentelimpieza.constantes.Direccion;
import uabc.ia.agentelimpieza.entidades.Accion;
import uabc.ia.agentelimpieza.entidades.Estado;
import uabc.ia.agentelimpieza.entidades.Percepcion;

public class Ambiente extends Observable{
	private Celda [][] celdas;
	private Celda locacionActual;
	private Direccion direccion;
	private boolean limpio;
	
	public Ambiente(){
	    celdas = new Celda [3][3];
	    locacionActual = celdas[0][0];
		direccion = Direccion.east;
		limpio=false;
	}

	public void limpiarCelda(){
		celdas[getLocacionActual().getX()][getLocacionActual().getY()].setSuciedad(false);
		setChanged(); 
		notifyObservers();
	}
	
	public Celda getLocacionActual() {
		return locacionActual;
	}


	public void setLocacionActual(Celda locacionActual) {
		this.locacionActual = locacionActual;
		setChanged(); 
		notifyObservers();
	}


	public Direccion getDireccion() {
		return direccion;
	}


	public void setDireccion(Direccion direccion) {
		this.direccion = direccion;
		setChanged(); 
		notifyObservers();
	}

	public boolean isLimpio() {
		return limpio;
	}

	public void setLimpio(boolean limpio) {
		this.limpio = limpio;
		setChanged(); 
		notifyObservers();
	}

	public Celda[][] getCeldas() {
		return celdas;
	}

	public void setCeldas(Celda[][] celdas) {
		this.celdas = celdas;
		locacionActual=celdas[0][0];
	}
	
	public void goHome(){
		locacionActual=celdas[0][0];
		setChanged(); 
		notifyObservers("go(home)");
		direccion=Direccion.west;
	}
}
